import { jwtDecode } from 'jwt-decode';

function isTokenValid(token) {
  try {
    const decoded = jwtDecode(token);

    // 检查 token 是否过期
    const expirationTime = new Date(decoded.exp * 1000); // JWT 中的时间戳是秒级，需要转换为毫秒
    if (new Date() > expirationTime) {
      return false; // token 已过期
    }

    // 检查 token 的时间戳是否在合理的范围内
    const timestamp = parseInt(decoded.timestamp, 10);
    const currentTime = Math.floor(Date.now() / 1000) - 28802; // 当前时间戳（秒级）- 2秒误差
    if (timestamp < (currentTime - 3600) || timestamp > (currentTime + 3600)) {
      // 如果 token 的时间戳与当前时间戳相差超过一小时，视为无效
      return false;
    }
    
    return true; // token 有效
  } catch (error) {
    // 如果 token 解码失败或不包含必要的声明，视为无效
    return false;
  }
}

export default isTokenValid;